From: Wen Congyang Date: Mon, 16 Mar 2015 13:29:50 +0000 (+0000) Subject: tools/libxl: Update datacopier to support sending data only X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~3609 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=42ad92e656192a214888a9bd07125ded8b66bbc4;p=xen.git tools/libxl: Update datacopier to support sending data only Currently, starting a datacopier requires a valid read and write fd, but this is a problem when purely sending data from a local buffer to a writable fd. The prefixdata mechanism already exists and works for inserting data from a local buffer ahead of reading from the read fd. Make the lack of a read fd non-fatal. A datacopier with no read fd, but some prefixdata will write the prefixdata to the write fd and complete successfully. Signed-off-by: Wen Congyang [Rewrite commit message] Signed-off-by: Andrew Cooper Acked-by: Ian Campbell CC: Ian Campbell CC: Ian Jackson CC: Wei Liu --- diff --git a/tools/libxl/libxl_aoutils.c b/tools/libxl/libxl_aoutils.c index b10d2e1583..3e0c0aefa7 100644 --- a/tools/libxl/libxl_aoutils.c +++ b/tools/libxl/libxl_aoutils.c @@ -309,9 +309,11 @@ int libxl__datacopier_start(libxl__datacopier_state *dc) libxl__datacopier_init(dc); - rc = libxl__ev_fd_register(gc, &dc->toread, datacopier_readable, - dc->readfd, POLLIN); - if (rc) goto out; + if (dc->readfd >= 0) { + rc = libxl__ev_fd_register(gc, &dc->toread, datacopier_readable, + dc->readfd, POLLIN); + if (rc) goto out; + } rc = libxl__ev_fd_register(gc, &dc->towrite, datacopier_writable, dc->writefd, POLLOUT);